/* -*-jde-*- */
package app.empresa;

import app.conexion.Conexion;
import app.conexion.ConexionException;
import app.util.appException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Usuario Todo usuario del sistema
 *
 * @author Victor Miguel Peralta Santa Anna
 * @since Diciembre 2011
 * @version 0.1
 */
public class Postulados {

    /**
     * Hacemos que un alumno quede postulado a esta vacante.
     *
     * @param nIdAlumno El identificador del usuario asignado al alumno.
     * @param nIdVacante El identificador de la vacante
     */
    public static void postulaAlumno(int nIdAlumno, int nIdVacante) throws appException {

        try {
            Conexion con = new Conexion();
            String query = "select addPostulado( " + nIdAlumno + ", " + nIdVacante + " );";
            con.exec(query);
            con.close();
        } catch (ConexionException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo postular al alumno en la vacante.");
        }
    }

    /**
     * Verificamos si un alumno esta o no postulado en la vacante
     *
     * @param nIdAlumno El identificador del usuario asignado al alumno.
     * @param nIdVacante El identificador de la vacante
     */
    public static boolean isPostulado(int nIdAlumno, int nIdVacante) throws appException {

        try {
            Conexion con = new Conexion();
            String query = "select isPostulado( " + nIdAlumno + ", " + nIdVacante + " );";
            ResultSet r = con.exec(query);
            r.next();
            boolean b = r.getBoolean("ispostulado");
            con.close();
            return b;

        } catch (SQLException ex) {
            System.err.println(ex);
            Logger.getLogger(Postulados.class.getName()).log(Level.SEVERE, null, ex);
            throw new appException("No se pudo verificar al alumno en la vacante.");
        } catch (ConexionException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo verificar al alumno en la vacante.");
        }
    }

    /**
     * Hacemos que un alumno quede despostulado a esta vacante.
     *
     * @param nIdAlumno El identificador del usuario asignado al alumno.
     */
    public static void despostulaAlumno(int nIdAlumno, int nIdVacante) throws appException {

        try {
            Conexion con = new Conexion();
            String query = "select deletePostulado( " + nIdAlumno + ", " + nIdVacante + " );";
            con.exec(query);
            con.close();
        } catch (ConexionException ce) {
            System.err.println(ce);
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ce);
            throw new appException("No se pudo despostular al alumno en la vacante.");
        }
    }

    /**
     * Conexiones de prueba a la base de datos
     *
     * @param args
     * @throws ConexionException
     * @throws SQLException
     * @throws appException
     */
    public static void main(String args[]) throws ConexionException, SQLException, appException {


        Postulados.postulaAlumno(1, 1);



    }
}
